package com.zjcloud.jwgl.service;

import java.util.List;
import com.zjcloud.jwgl.domain.ScClass;

/**
 * 班级信息Service接口
 * 
 * @author zjcloud
 * @date 2024-12-19
 */
public interface IScClassService 
{
    /**
     * 查询班级信息
     * 
     * @param id 班级信息主键
     * @return 班级信息
     */
    public ScClass selectScClassById(Long id);

    /**
     * 查询班级信息列表
     * 
     * @param scClass 班级信息
     * @return 班级信息集合
     */
    public List<ScClass> selectScClassList(ScClass scClass);

    /**
     * 新增班级信息
     * 
     * @param scClass 班级信息
     * @return 结果
     */
    public int insertScClass(ScClass scClass);

    /**
     * 修改班级信息
     * 
     * @param scClass 班级信息
     * @return 结果
     */
    public int updateScClass(ScClass scClass);

    /**
     * 批量删除班级信息
     * 
     * @param ids 需要删除的班级信息主键集合
     * @return 结果
     */
    public int deleteScClassByIds(Long[] ids);

    /**
     * 删除班级信息信息
     * 
     * @param id 班级信息主键
     * @return 结果
     */
    public int deleteScClassById(Long id);

    /**
     * 根据年级ID查询班级列表
     * 
     * @param gradeId 年级ID
     * @return 班级列表
     */
    public List<ScClass> selectScClassByGradeId(Long gradeId);

    /**
     * 根据班级编码查询班级信息
     * 
     * @param classCode 班级编码
     * @return 班级信息
     */
    public ScClass selectScClassByCode(String classCode);

    /**
     * 检查班级编码是否唯一
     * 
     * @param scClass 班级信息
     * @return 结果
     */
    public String checkClassCodeUnique(ScClass scClass);

    /**
     * 根据班主任ID查询班级信息
     * 
     * @param headTeacherId 班主任ID
     * @return 班级信息
     */
    public ScClass selectScClassByHeadTeacherId(Long headTeacherId);

    /**
     * 获取班级统计信息
     * 
     * @param classId 班级ID
     * @return 统计信息
     */
    public ScClass getClassStatistics(Long classId);

    /**
     * 更新班级统计信息
     * 
     * @param classId 班级ID
     * @return 结果
     */
    public int updateClassStatistics(Long classId);

    /**
     * 分配班主任
     * 
     * @param classId 班级ID
     * @param headTeacherId 班主任ID
     * @return 结果
     */
    public int assignHeadTeacher(Long classId, Long headTeacherId);

    /**
     * 取消班主任分配
     * 
     * @param classId 班级ID
     * @return 结果
     */
    public int unassignHeadTeacher(Long classId);
}